package com.lm.activiti.boot.tools.timer;

import java.util.Timer;
import java.util.TimerTask;

/**
 * @author lm_jcf
 * @date 2020/3/23 10:20
 */
public class TimerDemo {


    public static void main(String[] args){
        Timer timer = new Timer();

        timer.schedule(new TimerTask() {
            @Override
            public void run() {
                System.out.println("测试");

            }
        },2000);

        System.out.println("11");

//        Timer.schedule 是实际时间
//        Timer.scheduleAtFixedRate   是理论时间
        // 调度器执行的时间是程序得到cup时间片时才会产生时间计算
        // 实际时间：当前时间 加上时间片就是下一次执行的时间点
        // 理论时间：每次理论计算出下一次需要调度的时间用以排序，若第8s被调度，那么计算出应该是第10s，所以它距离当前时间是2s，那么再调度队列排序中，会被优先调度，那么就尽量减少漏掉调度的情况

        timer.scheduleAtFixedRate(new TimerTask() {
            @Override
            public void run() {
                System.out.println("scheduleAtFixedRate 执行");
            }
        }, 2000, 1000);
    }


}
